﻿using OConf.Model.Common;
using OConf.Model.RequestInput.ConfigInfo;
using OConf.Model.RequestInput.ProjectInfo;

namespace OConf.IBLL
{
    public interface IProjectInfoBLL
    {
        /// <summary>
        /// 新增项目信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> AddProjectInfo(AddProjectInfoInput input);

        // <summary>
        /// 编辑项目信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> EditProjectInfo(EditProjectInfoInput input);

        /// <summary>
        /// 软删除项目信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> DeleteProjectInfo(DeleteProjectInfoInput input);

        /// <summary>
        /// 系统管理员回收站删除项目信息（硬删除）
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> SysDelete(DeleteProjectInfoInput input);

        /// <summary>
        /// 还原项目信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> Reduction(DeleteProjectInfoInput input);

        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        ReturnData<ReturnTableData<ProjectInfoModel>> QueryPage(QueryProjectInput queryParam);

        /// <summary>
        /// 回收站项目信息列表
        /// </summary>
        /// <param name="queryParam"></param>
        /// <returns></returns>
        ReturnData<ReturnTableData<ProjectInfoModel>> QueryRecycleProjectInfo(QueryProjectInput queryParam);

        /// <summary>
        /// 项目详情-包含的配置信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<ProjectConfigs> GetProjectConfigs(GetProjectConfigsInput input);

        /// <summary>
        /// 获取后台系统需要的配置信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<BackProgramConfigInfo> GetBackProgramConfigInfo(BackProgramGetConfigInfoInput input);

        /// <summary>
        /// 检查配置信息版本
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<BackProgramConfigInfo> CheckConfigInfo(CheckConfigInfoInput input);

        /// <summary>
        /// 重置秘钥
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> ResetSecretKey(ResetSecretKeyInput input);

        /// <summary>
        /// 生成json配置文件信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        ReturnData<bool> GenerateConfigFileInfo(GenerateConfigInfoListInput input);

    }
}
